//******************************************************************************
// Copyright (C) 1999 Jim Wanner and the SourceMonitor team.
//
// Permission is hereby granted, free of charge, to any person obtaining a
// copy of this software and associated documentation files (the "Software"),
// to deal in the Software without restriction, including without limitation
// the rights to use, copy, modify, merge, publish, distribute, sublicense,
// and/or sell copies of the Software, and to permit persons to whom the
// Software is furnished to do so, subject to the following conditions:
//
// The above copyright notice and this permission notice shall be included
// in all copies or substantial portions of the Software.
//
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
// THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
// DEALINGS IN THE SOFTWARE.
//******************************************************************************

#include "factory.h"

#include <map>
#include <unordered_map>

namespace smos
{
    namespace smcore
    {
        //******************************************************************************
        Options *Factory::getOptions(smos::smcore::SMString optionsfile)
        {
            static std::unordered_map<smos::smcore::SMString, Options *> programOptions;
            if (programOptions.find(optionsfile) == programOptions.end())
            {
                programOptions.insert(std::make_pair(optionsfile, new Options(optionsfile)));
            }
            return programOptions[optionsfile];
        }
        //******************************************************************************
        Version *Factory::getVersion(void)
        {
            static Version smVersion;
            return &smVersion;
        }
        //******************************************************************************
    }
}
